cssnode: Propagate NTH_LAST_CHILD changes properly
authorBenjamin Otte <otte@redhat.com>
Mon, 9 Nov 2015 00:42:41 +0000 (01:42 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 9 Nov 2015 00:48:14 +0000 (01:48 +0100)
We were just catching the previous sibling before. Now we properly
invalidate all previous siblings (and also all other wiblings, but we
can think about optimizing that later).

gtk/gtkcssnode.c

index 7a06d6ae9e0e392be7074aaaa0edf9a003a59077..aa278eb70ae47836170d73436bbf7794060d5957 100644 (file)
@@ -1005,8 +1005,11 @@ gtk_css_node_set_visible (GtkCssNode *cssnode,
                                                     | (cssnode->previous_sibling ? 0 : GTK_CSS_CHANGE_FIRST_CHILD));
 
   if (cssnode->previous_sibling)
-    gtk_css_node_invalidate (cssnode->previous_sibling, GTK_CSS_CHANGE_NTH_LAST_CHILD
-                                                        | (cssnode->next_sibling ? 0 : GTK_CSS_CHANGE_LAST_CHILD));
+    {
+      if (cssnode->next_sibling)
+        gtk_css_node_invalidate (cssnode->previous_sibling, GTK_CSS_CHANGE_LAST_CHILD);
+      gtk_css_node_invalidate (cssnode->parent->first_child, GTK_CSS_CHANGE_NTH_LAST_CHILD);
+    }
 }
 
 gboolean